var countA = 0;
function feiboA(n) {
    countA++;
    //这个countA是用来检测函数执行的次数的
    //如果是第一项和第二项结果是1
    if (n == 1 && n == 2) {
        return 1;
    }
    // 由于每一项等于前两项之和,即fn=f(n-1)+f(n-2)

    return feiboA(n - 1) + feiboA(n - 2);
}
console.log(feiboA(10));
console.log("countA", countA);
//结论:第一种递归算法的开销太大，执行的次数较多，效率不高，真正的开发基本不会用到这个函数，而是需要进行优化,通过一个数组将每次计算结果存起来，从头开始
const countB = 0;
function feiboB(n, arr) {
    countB++;
    //当arr的数据长度为0和1时，将1push进去
    if (arr.length < 2) {
        arr.push(1);
    }
    //将前两项加起来，得到后面一项
    const a = arr[arr.length - 1];
    const b = arr[arr.length - 2];
    arr.push(a + b);
    if (arr.length < n) {
        return feiboB(n, arr);
    } else if (arr.length == n) {
        return arr[arr.length - 1];

    }

}
console.log(feiboB(10, []));
console.log("countB", countB);